package main

import "fmt"

/**
指针与结构体
	定义指针，指向结构体
	通过结构体指针，完成对结构成员的一些操作
*/
func main() {
	//创建结构体对象
	stu := Student{101, "qq", 18}

	//定义结构体指针,该指针指向结构体
	var p *Student
	p = &stu
	fmt.Println(*p)
	fmt.Println((*p).name) //.的运算优先级比较高，所以这里要括起来
	//结构体指针简化写法
	fmt.Println(p.name) //支持这种简化写法

	//修改结构体中的值
	p.name = "令狐冲"
	fmt.Println(stu)

	/**
	结构体指针作为函数参数
	*/
	//传入一个结构体指针
	updateStruct(p)
	fmt.Println(stu) //{101 王五 22}
}

type Student struct {
	id   int
	name string
	age  int
}

//传递一个结构体指针，接收结构体指针	*Student
func updateStruct(stu *Student) {
	stu.name = "王五"
	stu.age = 22
}
